home *** CD-ROM | disk | FTP | other *** search
/ Delphi Magazine Collection 2001 / Delphi Magazine Collection 20001 (2001).iso / DISKS / ISSUE01 / CONSTRUC / DATE3.PAS < prev   
Encoding:
Pascal/Delphi Source File  |  1995-01-03  |  2.2 KB  |  82 lines

  1. unit Date3;
  2. interface
  3. uses SysUtils, Classes;
  4.  
  5. Type
  6.   TDayOfWeek = (Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday);
  7.  
  8.   TDate3 = class(TComponent)
  9.                 private
  10.                   FInternalDate: TDateTime;
  11.  
  12.                   FDay:   Word;
  13.                   FMonth: Word;
  14.                   FYear:  Word;
  15.  
  16.                 protected
  17.                   procedure SetDay(NewDay: Word);
  18.                   procedure SetMonth(NewMonth: Word);
  19.                   procedure SetYear(NewYear: Word);
  20.  
  21.                   function GetDayOfWeek: TDayOfWeek;
  22.  
  23.                 private
  24.                   DummyTDayOfWeek: TDayOfWeek;
  25.  
  26.                 published
  27.                   property Day:   Word read FDay   write SetDay;
  28.                   property Month: Word read FMonth write SetMonth;
  29.                   property Year:  Word read FYear  write SetYear;
  30.  
  31.                   property DayOfWeek: TDayOfWeek read GetDayOfWeek
  32.                                                  write DummyTDayOfWeek;
  33.                 public
  34.                   constructor Create(AOwner: TComponent); override;
  35.                 end {TDate3};
  36.  
  37.   procedure Register;
  38.  
  39. implementation
  40.  
  41.   Constructor TDate3.Create(AOwner: TComponent);
  42.   begin
  43.     inherited Create(AOwner);
  44.     FInternalDate := SysUtils.Date;
  45.     DecodeDate(SysUtils.Date,FYear,FMonth,FDay);
  46.   end {Create};
  47.  
  48.   procedure TDate3.SetDay(NewDay: Word);
  49.   begin
  50.     if (NewDay in [1..31]) then
  51.     begin
  52.       FDay := NewDay;
  53.       FInternalDate := EncodeDate(FYear,FMonth,FDay);
  54.     end;
  55.   end {SetDay};
  56.  
  57.   procedure TDate3.SetMonth(NewMonth: Word);
  58.   begin
  59.     if (NewMonth in [1..12]) then
  60.     begin
  61.       FMonth := NewMonth;
  62.       FInternalDate := EncodeDate(FYear,FMonth,FDay);
  63.     end;
  64.   end {SetMonth};
  65.  
  66.   procedure TDate3.SetYear(NewYear: Word);
  67.   begin
  68.     FYear := NewYear;
  69.     FInternalDate := EncodeDate(FYear,FMonth,FDay);
  70.   end {SetYear};
  71.  
  72.   function TDate3.GetDayOfWeek: TDayOfWeek;
  73.   begin
  74.     GetDayOfWeek := TDayOfWeek(Pred(SysUtils.DayOfWeek(FInternalDate)));
  75.   end {GetDayOfWeek};
  76.  
  77.   procedure Register;
  78.   begin
  79.     RegisterComponents('Dr.Bob', [TDate3])
  80.   end {Register};
  81. end.
  82.